# -*- coding: utf-8 -*-
from tencentcloud.common import credential
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
# 导入 SMS 模块的client models
from tencentcloud.sms.v20190711 import sms_client, models

from django.conf import settings


class SmsSender:

    def __init__(self):
        self.cred = credential.Credential(settings.SMS_SECRET_ID, settings.SMS_SECRET_KEY)
        self.client = sms_client.SmsClient(self.cred, "ap-shanghai")
        self.req = models.SendSmsRequest()
        self.req.SmsSdkAppid = settings.SMS_APP_ID
        self.req.Sign = settings.SMS_SIGN

    def send(self, phone_number, template_id, sms_code):
        """
        :param phone_number: 手机号
        :param template_id: 短信模板id
        :param sms_code: 短信验证码 4-6位
        :return:
        使用示例：
        obj = SmsSender()
        obj.send('18545698569',settings.SMS_TEMPLATE_ID['login'],1234)
        """
        try:
            self.req.PhoneNumberSet = [f"+86{phone_number}".strip()]
            # 模板 ID: 必须填写已审核通过的模板 ID，可登录 [短信控制台] 查看模板 ID
            self.req.TemplateID = template_id
            # 模板参数: 若无模板参数，则设置为空
            self.req.TemplateParamSet = [sms_code]
            # 通过 client 对象调用 SendSms 方法发起请求。注意请求方法名与请求对象是对应的
            # 给腾讯云发送请求 让腾讯云发送短信
            resp = self.client.SendSms(self.req)
            # 发送短信后的结果，可以用来判断是否发送成功来了

            return resp.SendStatusSet[0].Code
        except TencentCloudSDKException as err:
            print(err)
